import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt




img = cv.imread('img/2.jpg',0)
f = np.fft.fft2(img)
fshift=np.fft.fftshift(f)


s1=np.log(np.abs(fshift))
plt.subplot(221),plt.imshow(img,'gray'),plt.title('original')
plt.xticks([]),plt.yticks([])

f1shift= np.fft.ifftshift(np.abs(fshift))
img_back=np.fft.ifft2(f1shift)

img_back =np.abs(img_back)

img_back=(img_back-np.amin(img_back))/(np.amax(img_back)-np.amin(img_back))
plt.subplot(222),plt.imshow(img_back,'gray'),plt.title('only Ampltitude')
plt.xticks([]),plt.yticks([])

f2shift=np.fft.ifftshift(np.angle(fshift))
img_back = np.fft.ifft2(f2shift)

img_back=np.abs(img_back)

img_back=(img_back-np.amin(img_back))/(np.amax(img_back)-np.amin(img_back))
plt.subplot(223),plt.imshow(img_back,'gray'),plt.title('only phase')
plt.xticks([]),plt.yticks([])

s1=np.abs(fshift)
s1_angle = np.angle(fshift)
s1_real=s1*np.cos(s1_angle)
s1_imag=s1*np.sin(s1_angle)
s2=np.zeros(img.shape,dtype=complex)
s2.real=np.array(s1_real)
s2.imag=np.array(s1_imag)
f2shift = np.fft.ifftshift(s2)
img_back=np.fft.ifft2(f2shift)

img_back=np.abs(img_back)

img_back=(img_back-np.amin(img_back))/(np.amax(img_back)-np.amin(img_back))
plt.subplot(224),plt.imshow(img_back,'gray'),plt.title('another way')
plt.xticks([]),plt.yticks([])

plt.show()
#ph_f=np.angle(f)
#ph_fshift=np.angle(fshift)
#s2=np.log(np.abs(fshift))
#plt.subplot(131),plt.imshow(img,'gray'),plt.title('original')
#plt.subplot(132),plt.imshow(s1,'gray'),plt.title('center')
#f1shift=np.fft.ifftshift(fshift)
#img_back=np.fft.ifft2(f1shift)
#img_back = np.abs(img_back)
plt.subplot(133),plt.imshow(img_back,'gray'),plt.title('img back')
plt.show()